<?php

//   load_extend('qqapi.class.php');
//为了防止重复定义，可以在定义一个新的类的时候判断一下这个类是否已经存在：
if (class_exists('qqapi') != true) {

    /**
     * qqapi.class.php  QQ接口Api，用于以QQ登录网站
     */
    class qqapi {

        private $appid, $appkey, $callback, $access_token, $openid;

        /**
         * 构造方法，用于初始化QQ所需参数
         * @param $appid, $appkey, $callback
         */
        public function __construct($appid, $appkey, $callback) {
            $this->appid = $appid;
            $this->appkey = $appkey;
            $this->callback = $callback;
            $this->access_token = '';
            $this->openid = '';
        }

        /**
         * 给外部调用的方法，供QQ登录
         */
        public function redirect_to_login() {
            //跳转到QQ登录页的接口地址, 不要更改!!
            $redirect = "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=$this->appid&scope=&redirect_uri=" . rawurlencode($this->callback);
            header("Location:$redirect");
        }

        /**
         * 获得登录的 openid
         * @param $code
         * @return string
         */
        public function get_openid($code) {
            $url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=$this->appid&client_secret=$this->appkey&code=$code&redirect_uri=" . rawurlencode($this->callback);
            $content = file_get_contents($url);
            if (stristr($content, 'access_token=')) {
                $params = explode('&', $content);
                $tokens = explode('=', $params[0]);
                $token = $tokens[1];
                $this->access_token = $token;
                if ($token) {
                    $url = "https://graph.qq.com/oauth2.0/me?access_token=$token";
                    $content = file_get_contents($url);
                    $content = str_replace('callback( ', '', $content);
                    $content = str_replace(' );', '', $content);
                    $returns = json_decode($content);
                    $openid = $returns->openid;
                    $this->openid = $openid;
                    $_SESSION["token2"] = $openid;
                } else {
                    $openid = '';
                }
            } elseif (stristr($content, 'error')) {
                $openid = '';
            }
            return $openid;
        }

        /**
         * 获取用户信息，返回一维数组
         * @return array
         */
        public function get_user_info() {
            $url = "https://graph.qq.com/user/get_user_info?access_token=$this->access_token&oauth_consumer_key=$this->appid&openid=$this->openid";
            $content = file_get_contents($url);
            return json_decode($content, true);
        }

    }

}
?>